package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SortPoint {
    public static void main(String[] args) {
        List<Point> list = new ArrayList<>();
        list.add(new Point(1, 1));
        list.add(new Point(12, 31));
        list.add(new Point(71, 21));
        list.add(new Point(87, 23));
        list.add(new Point(46, 58));
        System.out.println("list:" + list);
        list.sort(new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                return o1.getX() - o2.getX();
            }
        });
        System.out.println("按照x大小排序的list:" + list);
        list.sort((o1, o2) -> {
            int len1 = o1.getX() * o1.getX() + o1.getY() * o1.getY();
            int len2 = o2.getX() * o2.getX() + o2.getY() * o2.getY();
            return len1 - len2;
        });
        System.out.println("按照远离原点排序的list:" + list);
        Collections.sort(list, (o1, o2) -> {
            int len1 = o1.getX() * o1.getX() + o1.getY() * o1.getY();
            int len2 = o2.getX() * o2.getX() + o2.getY() * o2.getY();
            return len2 - len1;
        });
        System.out.println("按照靠近原点排序的list:" + list);
    }
}
